import Vue from "vue";
import App from "./App.vue";
import router from "./router";
// 导入axios库
import axios from "axios";
Vue.prototype.$axios = axios;
// 导入element
import ElementUI from "element-ui";
// 导入css
import "element-ui/lib/theme-chalk/index.css";
// 注册组件库
Vue.use(ElementUI);
// 基准路径
axios.defaults.baseURL = "http://127.0.0.1:3000";
Vue.config.productionTip = false;

// 请求拦截器处理token
axios.interceptors.request.use((config) => {
  // 本地存储有token但请求头没有token 自动加入token
  if (localStorage.getItem("token") && !config.headers.Authorization) {
    // 强制加入token
    config.headers.Authorization = "Bearer " + localStorage.getItem("token");
  }
  // 放行
  return config;
});
// 创建导航守卫-每次页面跳转在需要token的地方进行拦截判断
router.beforeEach((to, from, next) => {
  // 页面不是跳转到登录页，验证token
  if (to.path !== "/login") {
    // 有token
    if (localStorage.getItem("token")) {
      // 放行
      next();
    } else {
      // 没有token
      // 重定向到登录页面
      router.push("/login");
    }
  } else {
    // 跳转到登录页面
    // 直接放行
    next();
  }
});

new Vue({
  router,
  render: function(h) {
    return h(App);
  },
}).$mount("#app");
